<?php
/**
 * 
 * 日志处理助手
 * @author yucy<yucy1985@gmail.com>
 *
 */
class LoggerHelper extends YucyAbsHelper
{
	/**
	 * 
	 * 严重错误, 导致系统崩溃无法使用
	 * @var string
	 */
    const EMERG = 'EMERG';
    
    /**
	 * 
	 * 警戒性错误, 必须被立即修改的错误
	 * @var string
	 */
    const ALERT = 'ALERT';
    
    /**
	 * 
	 * 临界值错误, 超过临界值的错误
	 * @var string
	 */
    const CRIT = 'CRIT';
    
    /**
	 * 
	 * 一般错误, 一般性错误
	 * @var string
	 */
    const ERR = 'ERR';
    
    /**
	 * 
	 * 警告性错误, 需要发出警告的错误
	 * @var string
	 */
    const WARN = 'WARN';
    
    /**
	 * 
	 * 通知, 程序可以运行但是还不够完美的错误
	 * @var string
	 */
    const NOTICE = 'NOTIC';
    
    /**
	 * 
	 * 信息, 程序输出信息
	 * @var string
	 */
    const INFO = 'INFO';
    
    /**
	 * 
	 * 调试信息
	 * @var string
	 */
    const DEBUG = 'DEBUG';
    
    
    private static $_adapter = array();
    
    
    public function __construct(){}
    
    
    public static function factory()
    {
    	return new self();
    }
    
    
    private function _getAdapter($storageType = '')
    {
    	if (!$storageType) $storageType = 'None';
    	if (isset(self::$_adapter[$storageType])) return self::$_adapter[$storageType];
    	
    	$class_name = ucfirst($storageType) . 'LoggerAdapter';
    	if (!class_exists($class_name, false))
    	{
    		require 'Logger' . DS . $class_name . '.php';
    	}
    	
    	self::$_adapter[$storageType] = new $class_name;
    	
    	return self::$_adapter[$storageType];
    }
    
    
    public function save($message, $level= 'ERR', $extra = '', $storageType = '')
    {
    	$this->_getAdapter($storageType)->save($message, $level, $extra);
    }
}